package dao.hero;


public class Xinlin extends BaseHero {

	public Xinlin()
    {
       this.name="新林" ;
       this.ID = 1364;
       this.HP = 850;
       this.maxHP=HP;
       this.ATT = 80;      
       this.DEF = 18;     
       this.DEX = 72;   
       this.blue = 300;
       this.sname1 = "普通攻击";
       this.sname2 = "窃魂剑";
       this.sname3 = "凌波微步";
       this.sname4 = "无敌连环斩";
       this. describe_skill1 = "技能详解：普通攻击，造成一定的物理伤害";
       this.describe_skill2 = "技能详解：耗蓝45,华丽的剑法，有效迷惑敌人造成一定物理伤害，并使敌人防御力降低2";
       this.describe_skill3 = "技能详解：耗蓝25,主动释放敏捷永久提升5，敏捷最高提升到100,被动敌人闪避率格外降低10";
       this.describe_skill4 = "技能详解：耗蓝160,大招，在高速状态下（敏捷必须达到90才可以使用），对敌人造成多段（3-6）连环斩，每段造成较大伤害伤害";
       this.describe_hero = "人物介绍：时而话唠时而寡言，好静，追求平凡，英雄定位为高敏捷，刺客型英雄";

       this.myluck="良好";
       headpath="image\\"+"xlhead.png";
       bodypath="image\\"+"xlbody.png";
    }
	public void attack(int skill, BaseHero enemy) {
		// TODO Auto-generated method stub
		enemy.setLastHP(enemy.getHP());//重置上一次血量
		if(skill==1){
			skill1(enemy);
		}else if(skill==2){
			skill2(enemy);
		}else if(skill==3){
			skill3(enemy);
		}else if(skill==4){
			skill4(enemy);
		}
		enemy.setNoDodge(false);//不是绝对命中
		blue+=20;
	}

	//技能1
	public void skill1(BaseHero enemy) {
		// TODO Auto-generated method stub
		blood=true;//掉血
		BaseHero.luck=(int)(Math.random()*10);//运气值随机数
		enemy.setLastHP(enemy.getHP());//重置上一次血量
		if((BaseHero.luck<2||isDodge(enemy))&&!noDodge){
			tip="普通攻击,"+enemy.getName()+"运气太好了，闪开了这次攻击";
		}else if(BaseHero.luck>7){
			enemy.setHP(enemy.getHP()-(ATT*2+BaseHero.luck*5)*(1-enemy.getDEF()/100));
			tip=name+"状态不错，使出了会心一击，造成"+enemy.getName()+(int)(enemy.getLastHP()-enemy.getHP())+"伤害";
		}else {
			enemy.setHP(enemy.getHP()-(this.ATT+BaseHero.luck*4)*(1-enemy.getDEF()/100));
			tip=name+"普通攻击，造成"+enemy.getName()+(int)(enemy.getLastHP()-enemy.getHP())+"伤害";
		}
	}
	//技能2
	public void skill2(BaseHero enemy) {
		// TODO Auto-generated method stub
		blood=true;//掉血
		enemy.setLastHP(enemy.getHP());// 重置上一次血量

		if ((blue - 45) >= 0) {// 是否够蓝
			if (!noDodge && isDodge(enemy)) {
				// 闪避了
				tip = "窃魂剑," + enemy.getName() + "太敏捷了，竟然闪开了这次攻击";
			} else {// 没有闪避
				enemy.setHP(enemy.getHP()
						- (50 + ATT * (1 - enemy.getDEF() / 100)));

				enemy.setDEX(enemy.getDEX() - 2);
				tip = name + "窃魂剑，造成" + enemy.getName()
						+ (int) (enemy.getLastHP() - enemy.getHP())
						+ "点伤害,同时防御力降低2";
			}

			blue -= 45;
		} else {
			skill1(enemy);
		}
	}

	////技能3
	public void skill3(BaseHero enemy) {
		// TODO Auto-generated method stub
		blood=true;//掉血
		enemy.setLastHP(enemy.getHP());//重置上一次血量
		if((blue-25)>=0){//是否够蓝

			if(DEX<100){
				setDEX(DEX+4);
				tip=name+"凌波微步，敏捷提升4，当前敏捷为："+DEX;
				blue-=25;
			}else {
				DEX=100;
				tip=name+"凌波微步，但敏捷已达上限，无法提高，当前敏捷为："+DEX;
			}
		}else {
			skill1(enemy);
		}

	}

	public void skill4(BaseHero enemy) {
		// TODO Auto-generated method stub
		blood=true;//掉血
		BaseHero.luck=(int)(Math.random()*3)+3;//运气值随机数
		enemy.setLastHP(enemy.getHP());// 重置上一次血量

		if ((blue - 160) >= 0 && DEX >= 90) {// 敏捷必须在90以上才可以使用，是否够蓝
			if (!noDodge && isDodge(enemy)) {
				// 闪避了
				tip = "大招,无敌连环斩," + enemy.getName() + "太敏捷了，竟然闪开了这次攻击";
			} else {// 没有闪避
				enemy.setHP(enemy.getHP() - (ATT + DEX * BaseHero.luck)
						* (1 - enemy.getDEF() / 100));
				tip = "哇塞！" + name + "大招，在高速状态下，对" + enemy.getName() + "进行"
						+ BaseHero.luck + "段连环斩，造成"
						+ (int) (enemy.getLastHP() - enemy.getHP()) + "伤害";
			}

			blue -= 160;
		} else {
			skill1(enemy);
		}
		
		
	}
	
	public boolean isDodge(BaseHero enemy){
		//当前敏捷比敌人高，增加闪避率,否则降低闪避率
		double dodge=enemy.getDEX()*0.3+(enemy.getDEX()-DEX)*0.25-10;
		System.out.println("当前闪避率"+dodge);
		int rand=(int)(Math.random()*100);//运气值随机数
		if(rand<dodge){
			System.out.println("闪避了"+rand);
			return true;
		}else{
			System.out.println("闪不开"+rand);
			return false;
		}    
	}

}
